#ifndef __MALLOC_H
#define __MALLOC_H
#include "stm32f4xx.h"
#include "stdio.h"
/*定义内存池*/
#define SRAM_IN				0						//内存内存池
//#define SRAM_EX				1						//外部内存池

#define SRAM_BANK			1						//定义内存块的个数	
//定义内存参数
#define MEM1_BLOCK_SIZE  32				//内存块大小
#define MEM1_MAX_SIZE		1024*20	//最大管理内存
#define MEM1_ALLOC_TABLE		MEM1_MAX_SIZE/MEM1_BLOCK_SIZE	//内存表大小
//内存管理
struct Mem_Malloc_Dev
{
	void (*init)(uint8_t);								//初始化
	uint8_t	 (*perused)(uint8_t);						//内存使用率	
	uint8_t    *Mem_Base[SRAM_BANK];			//内存池
	uint16_t		*Mem_Map[SRAM_BANK];				//内存状态表
	uint8_t		 Mem_Ready[SRAM_BANK];			//内存管理是否就绪
};

extern  struct Mem_Malloc_Dev   Malloc_Dev;



void* mymalloc(uint8_t mem_x,uint16_t size);		//内存申请
void *myfree(uint8_t mem_x,void *ptr);			//内存释放
void My_Mem_Init(uint8_t Mem_x);						//初始化内存
void  My_Mem_Cpy(void *des,void *src,uint32_t n);	//拷贝数据
void  My_Mem_Set(void *p,uint8_t value,uint32_t count);//清空数据
#endif
